﻿/***************************************************
Всякие полезные и не очень функции работы с окнами
****************************************************/

// Открывает новое окно по урлу, нэйму и быть может еще каким-то параметрам
function OpenWindow(url,wname , width,height,top,left) {

    var options = '';
    var name = wname||'blank';
    
    width = width || 900;
    height = height || 800;
    top = top || ((window.screen.height / 2) - 400);
    left = left || ((window.screen.width / 2) - 450);

    options = options + 'toolbar=no';
    options = options + ',location=no';
    options = options + ',directories=no';
    options = options + ',menubar=no';
    options = options + ',status=yes';
    options = options + ',scrollbars=yes';
    options = options + ',resizable=yes';

    options = options + ',width=' + width;
    options = options + ',height=' + height;

    options = options + ',top=' + top;//((window.screen.height / 2) - (height / 2) - 50);
    options = options + ',left=' + left;//((window.screen.width / 2) - (width / 2));

    var win = window.open(url, name, options);

    win.focus();
    return win;
}

// Сериализует простые свойства объекта в строку для урла
function objectToLocationHash(obj) {
    var hash = '';
    for (var i in obj) {
        if (typeof obj[i] == 'function') continue;
        if (typeof obj[i] == 'object') continue;
        hash += i + '=' + encodeURIComponent([i]) + '&';
    }
    if (hash.length > 0) hash = hash.substring(0, hash.length - 1);
    return hash;
}

// Десериализует урл в объект
function locationHashToObject(hash, obj) {
    obj = obj || new Object();
    var pairs = hash.split('#')[hash.split('#').length - 1].split('&');
    for (i in pairs) {
        try {
            if (pairs[i].split('=').length < 2) continue;
            var key = pairs[i].split('=')[0];
            var val = pairs[i].split('=')[1] || '';
            eval('obj.' + key + '="' + decodeURIComponent(val) + '";');
        }
        catch (e) {/*debug*/ }
    }
    return obj;
}

